# 抖码算法，让算法学习变得简单有趣
# 作者：老汤


# 尾递归
# 时间复杂度：O(n)
# 空间复杂度：O(n)
def factorial(n, res):
    if n <= 0:
        return 0
    # 最小子问题
    if n == 1:
        return res
    return factorial(n - 1, n * res)


print(factorial(6, 1))